No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 

67 líneas
3.1 KiB

  1. import React from 'react';
  2. import Header from "@/components/MainWebsite/Header";
  3. import Footer from "@/components/MainWebsite/Footer";
  4. import HeaderYamaha from "@/components/Company/Header";
  5. import FooterYamaha from "@/components/Company/Footer";
  6. import NewsDetail from "@/components/Common/new/NewsDetail";
  7. //api
  8. import News from "../../../api/new/news"
  9. import Social from "@/api/new/social";
  10. import Dealer from "@/api/new/dealer";
  11. import Company from "@/api/new/company";
  12. const NewsDetails = ({companyData,company,news,navigation,id,socials,desc,dealer,icon}) => {
  13. return (
  14. <>
  15. {!(company=="Thamrin")?(<HeaderYamaha company={company.toLowerCase()} icon={icon} />):(<Header icon={icon} sticky={true} isHome={false}/>)}
  16. <NewsDetail id={id} news={news} navigation={navigation}/>
  17. {!(company=="Thamrin")?(<FooterYamaha company={companyData} icon={icon} social={socials} desc={desc}/>):(<Footer icon={icon} info={dealer} isHome={false} social={socials} desc={desc}/>)}
  18. </>
  19. )
  20. }
  21. export async function getServerSideProps(context) {
  22. const { id } = context.query;
  23. var props = {"id":id};
  24. var content = await News.newsById(id);
  25. if (content["STATUS"] === 1) {
  26. props["news"] = content["DATA"].content.data.attributes;
  27. }
  28. var Ids = await News.newsByCompanyId(content["DATA"].content.data.attributes.Company.data.id);
  29. if(Ids["STATUS"]==1){
  30. var currentNewsIdx;
  31. var newsIds = Ids["DATA"].contents.data.map((i,idx)=>{
  32. if(i.id == id) currentNewsIdx = idx;
  33. return {id:i.id,title:i.attributes.Title,publishedAt:i.attributes.publishedAt,thumbnail:(i.attributes.Image.data)?i.attributes.Image.data.attributes.url:null};
  34. });
  35. if(currentNewsIdx != null){
  36. props["navigation"] =newsIds.filter((i,idx)=>{
  37. return ((currentNewsIdx<(newsIds.length-1)&& idx ==(currentNewsIdx+1)) || (currentNewsIdx> 0 && idx == (currentNewsIdx -1)));
  38. });
  39. }
  40. }
  41. var socials = await Social.socialByCompany(content["DATA"].content.data.attributes.Company.data.id);
  42. if(socials["STATUS"]==1){
  43. props["socials"] = socials["DATA"].socialMedias.data;
  44. }
  45. var dealers = await Dealer.dealersByCompanyId(content["DATA"].content.data.attributes.Company.data.id);
  46. if(dealers["STATUS"]==1&&dealers["DATA"].dealers.data && dealers["DATA"].dealers.data.length>0){
  47. const dealer = dealers["DATA"].dealers.data[0].attributes;
  48. props["dealer"] = {Email:dealer.Email, Address:dealer.Address, Telp: dealer.Telp};
  49. }
  50. var icon = await Company.companyIcon(content["DATA"].content.data.attributes.Company.data.id);
  51. if(icon["STATUS"]==1)props["icon"] = icon["DATA"].company.data.attributes.Icon.data.attributes.url;
  52. props["company"] = content["DATA"].content.data.attributes.Company.data.attributes.Name;
  53. props["companyData"] = content["DATA"].content.data.attributes.Company.data.attributes;
  54. props["desc"] = content["DATA"].content.data.attributes.Company.data.attributes.Description;
  55. return {
  56. props
  57. };
  58. }
  59. export default NewsDetails;